﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Erau.ERBParser
{
	public class ErbStreamReader : StreamReader
	{
		int curLine;
		int nextLine;

		public int Line { get { return curLine; } }

		public ErbStreamReader(string path)	: base(path) 
		{ 
			curLine = 0;
			nextLine = 0;
		}

		override public string ReadLine()
		{
			string str = string.Empty;
			string buf;
			bool isMergedLine = false;

			curLine = nextLine;
			while (Peek() >= 0)
			{
				buf = base.ReadLine().Trim();
				nextLine++;

				if (buf.Length < 1) continue; // 빈 줄 패스.

				if (buf[0] == ';') continue; // 첫글자가 주석문이면 파싱 효율을 높이기 위해 빈줄로 취급해 패스.

				if (buf[0] == '{')
				{
					// '{' 뒤에 뭔가 붙어 있는지 체크해서 있을 경우 경고를 뿌려주는게 좋을듯. 시간나면 -_-;

					isMergedLine = true;
					continue;
				}
				else if (isMergedLine && buf[0] == '}')
				{
					// '}' 뒤에 뭔가 붙어 있는지 체크해서 있을 경우 경고를 뿌려주는게 좋을듯. 시간나면 -_-;

					break;
				}
				else
				{
					str += buf;
					if (!isMergedLine) break;
				}
			}

			return str;
		}
	}
}
